importPackage(java.util);
importPackage(net.vsame.v);

function init(map, errors, method, clazz){ 
	
	//记录方法上错误信息
	var methodRolus = {}; 
	
	//处理错误
	var hanldError = function(str, isClazz){
		var getArray = function(a){
			a = a + "@@@@@@";
			var b = 0;
			var array = [];
			for(var i=0; i<a.length; i++){
				var c = a.charAt(i);
				if(c=='\\'){
					i++;
					continue;
				}
				if(c=='"' || c=="'"){
					i = a.indexOf(c, i+1);
					continue;
				}
				if(c == '@'){
					array.push(a.substring(b, i).replace(/(^\s*)|(\s*$)/g, ""));
					b = i+1;
				}
			}
			return array;
		};
		var array = getArray(str);//取得数组
		//
		var key = array[0];
		if(isClazz){
			if(methodRolus[key]){
				return ;
			}
		}else{
			methodRolus[key] = true;
		}
		//假设全部以数组论处
		var strs = map.get(key);
		for(var i in strs){
			var $ = strs[i] + '';//String对象 转为js Str
			var msg = '';
			var v = function(regex, data){
				var t = vRegex[regex];
				if(t){
					if(t.error){
						msg = t.error;
					}
					if(t.regex){
						regex = t.regex;
					}
					if(t.fun){
						return eval('(' + t.fun + ')(data)');
					}
				}
				// 执行 
				return (new RegExp(regex, 'i')).test(data);
			};
			var script = array[1];
			if(script.search('return')==-1){
				script = 'return ' + script;
			}
			var retVal = eval('((function(){' + script + '})())');
			
			if(!retVal){
				if(array[2]){
					msg = array[2];
				}
				errors.put(key, msg);//增加错误
				break;
			}
		}
		
	};
	//方法上错误信息
	for(var i in method){
		var temp = method[i];
		hanldError(temp);
	}
	//类上错误信息
	for(var i in clazz){
		var temp = clazz[i];
		hanldError(temp, true);
	}
}
